package TestMethod;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * 从键盘接收整形数据存放到数组中,并对数组中的数据进行管理
 */
public class DataManage {
    //从键盘接收数据的方法(插入数据)
    public int[] insertData(){
        int[] arr=new int[10];
        Scanner scanner=new Scanner(System.in);
        //少接受一个数据,为指定位置处插入数据做准备
        for (int i=0;i< arr.length-1;i++){
            System.out.println("请输入第"+(i+1)+"个数据:");
            try {
                arr[i]=scanner.nextInt();
            }catch (InputMismatchException e){
                System.out.println("输入的格式有误!");
                scanner.next();
                i--;
            }
        }
        return arr;
    }
    //数组元素显示

    public void showData(int[] arr,int length){
        for (int i=0;i<length;i++){
            System.out.print(arr[i]+"  ");
        }
        System.out.println();
    }
    //在指定位置处插入数据

    /**
     *从键盘接收数据,插入到数组指定的位置
     * @param arr:数组
     * @param n:要插入的数据
     * @param k:插入的位置
     */
    public void insertAtArray(int[] arr,int n,int k){
        for (int i=arr.length-1;i>k;i--){
            arr[i]=arr[i-1];
        }
        arr[k]=n;
    }
    //输出数组中能被3整除的元素
    public void divThree(int[] arr){

        //System.out.print("能被3整除的元素:");
        String str="";
        int count=0;
        for (int n:arr) {
            if (n % 3 == 0) {
                //System.out.print(n + "  ");
                str=str+n+"  ";
                count++;
            }
        }
        if (count==0){
            System.out.println("没有能被3整除的元素!");
        }else {
            System.out.println("数组中能被3整除的元素:"+str);
        }
    }
    //提示信息的方法
    public void notice(){
        System.out.println("***************************************");
        System.out.println("        1--插入数据");
        System.out.println("        2--显示所有数据数据");
        System.out.println("        3--在指定位置处插入数据");
        System.out.println("        4--查询能被3整除的数据");
        System.out.println("        0--退出");
        System.out.println("***************************************");
    }
    public static void main(String[] args) {
        DataManage dm=new DataManage();
        Scanner sc=new Scanner(System.in);
        int input=0;
        int[] arr=null;
        int n=0,k=0;
        while(true){
            dm.notice();
            System.out.println("请输入对应的数字进行操作:");
            try{
                input=sc.nextInt();
            }catch (InputMismatchException e){
                System.out.println("插入数据格式错误!");
                sc.next();
                continue;
            }
            if (input==0){
                System.out.println("退出程序!");
                break;
            }
            switch (input){
                case 1:
                    arr=dm.insertData();
                    System.out.println("数组元素为:");
                    dm.showData(arr,arr.length-1);
                    break;
                case 2:
                    if (arr!=null){
                        System.out.println("数组的元素为:");
                        if (arr[arr.length-1]==0){
                            dm.showData(arr,arr.length-1);
                        }else {
                            dm.showData(arr,arr.length);
                        }

                    }else {
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
                case 3:
                    if (arr!=null){
                        System.out.println("请输入要插入的数据:");
                        try{
                            n=sc.nextInt();
                            System.out.println("请输入要插入数据的位置");
                            k=sc.nextInt();
                        }catch (InputMismatchException e){
                            System.out.println("插入数据格式错误!");
                            sc.next();
                            break;
                        }
                        dm.insertAtArray(arr,n,k-1);
                        dm.showData(arr,arr.length);

                    }else {
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
                case 4:
                    if (arr!=null){
                        dm.divThree(arr);
                    }else {
                        System.out.println("还未在数组中插入数据,请重新选择操作!");
                    }
                    break;
            }
        }
    }
}
